home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / A+ Disk Magazine Volume 1, No. 1 (1984)(Ziff-Davis).zip / A+ Disk Magazine Volume 1, No. 1 (1984)(Ziff-Davis).do / TRANSORT.bas < prev   
BASIC Source File  |  1996-12-24  |  15KB  |  262 lines

  1. 50  HOME 
  2. 60  VTAB 8: HTAB 12: PRINT "A+ DISK MAGAZINE "
  3. 70  VTAB 10: HTAB 16: PRINT "PRESENTS"
  4. 80  VTAB 14: HTAB 12: INVERSE : PRINT "TRANSPARENT SORT"
  5. 90  VTAB 17: HTAB 19: NORMAL : PRINT "BY"
  6. 100  VTAB 19: HTAB 14: PRINT "JOHN SCHNELL"
  7. 110  VTAB 23: HTAB 22: PRINT "(C)COPYRIGHT 1983"
  8. 120  FOR U = 1 TO 4000: NEXT U
  9. 1100  REM  === MAIN MENU ===
  10. 1120 TI$ = ">>> MAIN MENU <<<":C = 4:C$(1) = "TRANSPARENT SORT":C$(2) = "NON-TRANSPARENT SORT":C$(3) = "SORT LISTING":C$(4) = "END PROGRAM"
  11. 1130  GOSUB 9200
  12. 1140  ON K GOSUB 5000,7000,3000,1500
  13. 1150  GOTO 1100
  14. 1500  REM  === END PROGRAM ===
  15. 1510  HOME : HTAB 15: VTAB 15: PRINT "> E N D <"
  16. 1520  FOR X = 1 TO 1000: NEXT : VTAB 20: END 
  17. 3000  REM  === LIST SORT ===
  18. 3010  HOME : HTAB 3: INVERSE : PRINT ">> SHELL/METZNER SORTING ROUTINE  <<";: NORMAL : PRINT : PRINT 
  19. 3020  FOR X = 1 TO 16: ON X GOSUB 6210,6220,6230,6240,6250,6260,6270,6280,6290,6300,6310,6320,6330,6340,6350,6360: PRINT : NEXT X
  20. 3030  VTAB 20: HTAB 3: FLASH : PRINT "  (PUSH ANY KEY TO CONTINUE) ";: GET I$: NORMAL : RETURN 
  21. 5000  REM  === SUPERVISE TRANS SORT ===
  22. 5010  CLEAR : GOSUB 8100
  23. 5020  GOSUB 8200
  24. 5030  GOSUB 5200
  25. 5040  GOSUB 5400
  26. 5050  GOSUB 5100
  27. 5060  GOSUB 5500
  28. 5070  GOSUB 6900
  29. 5080  GOTO 1100
  30. 5100  REM  === PAUSE TO START ===
  31. 5110  FLASH : VTAB 23: HTAB 9: PRINT "PUSH ANY KEY TO START";
  32. 5120  GET I$: INVERSE :I$ =  STR$(SC): VTAB 16: HTAB 30: PRINT "<SPEED=" +I$ +">";: NORMAL : RETURN 
  33. 5200  REM  === DRAW SCREEN ===
  34. 5210  HOME : INVERSE 
  35. 5220 VL$ = " " + CHR$(10) + CHR$(8):VM$ = VL$ +VL$ +VL$ +VL$ +VL$ +VL$ +VL$ +VL$ +VL$ +VL$:VM$ = VM$ +VM$
  36. 5230  VTAB 1: PRINT "               VARIABLES                "
  37. 5231  VTAB 10: PRINT "               STATISTICS               "
  38. 5232  VTAB 17: HTAB 2: PRINT S1$;
  39. 5233  VTAB 18: HTAB 2: PRINT S1$;
  40. 5234  VTAB 19: HTAB 2: PRINT S1$;
  41. 5235  VTAB 20: HTAB 2: PRINT S1$;
  42. 5236  VTAB 21: HTAB 2: PRINT S1$;
  43. 5237  VTAB 22: HTAB 2: PRINT S1$;
  44. 5238  VTAB 23: HTAB 2: PRINT S1$;
  45. 5240  VTAB 2: HTAB 1: PRINT VM$ +VL$ +" ";: VTAB 2: HTAB 40: PRINT VM$ +VL$ +" ";: NORMAL 
  46. 5250  VTAB 2: HTAB 3: PRINT "(INTERVAL) -----------------  I = " + RIGHT$(" " + STR$(I),2);
  47. 5260  VTAB 3: HTAB 3: PRINT "(END OF PASS FLAG) ---------  F = " + RIGHT$("  " + STR$(F),2);
  48. 5270  VTAB 4: HTAB 3: PRINT "(PROGRESS POINTER) ---------  P = " + RIGHT$("  " + STR$(P),2);
  49. 5280  VTAB 5: HTAB 3: PRINT "(LOW SUBSCRIPT) ------------  L = " + RIGHT$("  " + STR$(L),2);
  50. 5290  VTAB 6: HTAB 3: PRINT "(HIGH SUBSCRIPT) -----------  H = " + RIGHT$("  " + STR$(H),2);
  51. 5300  VTAB 7: HTAB 3: PRINT "(LOW STRING) -----------  A$(L) =  " +A$(L);
  52. 5310  VTAB 8: HTAB 3: PRINT "(HIGH STRING) ----------  A$(H) =  " +A$(H);
  53. 5320  VTAB 9: HTAB 3: PRINT "(TEMP STRING) -------------  T$ =  " +T$;
  54. 5330  VTAB 11: HTAB 3: PRINT "(# OF STATEMENTS EXECUTED) -  = " + RIGHT$("   " + STR$(RS),3);
  55. 5340  VTAB 12: HTAB 3: PRINT "(# OF COMPARISONS MADE) ----  = " + RIGHT$("   " + STR$(RC),3);
  56. 5350  VTAB 13: HTAB 3: PRINT "(# OF EXCHANGES MADE) ------  = " + RIGHT$("   " + STR$(RE),3);
  57. 5360  VTAB 14: HTAB 3: PRINT "(# OF PLACES BTW'N ITEMS) --  = " + RIGHT$("   " + STR$(I),3);
  58. 5370  VTAB 15: HTAB 3: PRINT "(# OF THIS PASS) -----------  = " + RIGHT$("   " + STR$(D),3);
  59. 5380  INVERSE : VTAB 16: HTAB 2: PRINT S1$;
  60. 5390  RETURN 
  61. 5400  REM  === DISPLAY ALPHABET ===
  62. 5410  INVERSE : VTAB 18: HTAB 7: GOSUB 9000: NORMAL : RETURN 
  63. 5500  REM  === SORT CONTROL ===
  64. 5510 I = 26:V = 1: GOSUB 5800
  65. 5520 I =  INT(I/2):V = 2: GOSUB 5800
  66. 5530 V = 3: GOSUB 5800: IF I = 0  THEN  RETURN 
  67. 5540 F = 26 -I:V = 4: GOSUB 5800
  68. 5550 P = 1:V = 5: GOSUB 5800
  69. 5560 L = P:V = 6: GOSUB 5800
  70. 5570 H = L +I:V = 7: GOSUB 5800
  71. 5580 V = 8: IF A$(L) < = A$(H)  THEN SW$ = "<SWAP NO> ": GOSUB 5800: GOTO 5640
  72. 5585 V = 8: IF A$(L) >A$(H)  THEN SW$ = "<SWAP YES>": GOSUB 5800
  73. 5590 T$ = A$(L):V = 9: GOSUB 5800
  74. 5600 A$(L) = A$(H):V = 10: GOSUB 5800
  75. 5610 A$(H) = T$:V = 11: GOSUB 5800
  76. 5620 L = L -I:V = 12: GOSUB 5800
  77. 5630 V = 13: GOSUB 5800: IF L >0  THEN 5570
  78. 5640 P = P +1:V = 14: GOSUB 5800
  79. 5650 V = 15: GOSUB 5800: IF P >F  THEN 5520
  80. 5660 V = 16: GOSUB 5800: GOTO 5560
  81. 5800  REM  === CHART HOUSEKEEPING ===
  82. 5810  NORMAL : REM  (STMT COUNT)
  83. 5820 RS = RS +1: VTAB 11: HTAB TH: PRINT  RIGHT$("   " + STR$(RS),3);
  84. 5830  REM  (UPDATE / STATS / VARS)
  85. 5840  ON V GOSUB 6010,6020,6030,6040,6050,6060,6070,6080,6090,6100,6110,6120,6130,6140,6150,6160
  86. 5850  INVERSE : VTAB 23: HTAB 2: PRINT S1$: VTAB 23: HTAB 3: ON V GOSUB 6210,6220,6230,6240,6250,6260,6270,6280,6290,6300,6310,6320,6330,6340,6350,6360
  87. 5860  NORMAL : VTAB 24: HTAB 2: PRINT S1$;: VTAB 24: HTAB 3: ON V GOSUB 6410,6420,6430,6440,6450,6460,6470,6480,6490,6500,6510,6520,6530,6540,6550,6560: INVERSE 
  88. 5900  REM  === STEP/SPEED CONTROL ===
  89. 5910  IF FL = 1  THEN 5970
  90. 5920  FOR X = 1 TO S:SC =  PEEK( -16384): POKE  -16368,0: IF SC >127  THEN I$ =  CHR$(SC -128): IF I$ = " "  THEN FL = 1: GOTO 5970
  91. 5930  IF SC >127  AND I$ =  >"1"  AND I$ < = "9"  THEN S =  VAL(I$) ^2: GOTO 5980
  92. 5935  IF SC >127  AND I$ = "M"  THEN  CLEAR : GOTO 1100
  93. 5940  NEXT X: GOTO 5980
  94. 5970  VTAB 16: HTAB 30: INVERSE : PRINT "   <STEP>";: VTAB 16: HTAB 34: GET I$:: IF I$ =  >"1"  AND I$ < = "9"  THEN S =  VAL(I$) ^2:FL = 0
  95. 5980  IF FL = 0  THEN  INVERSE : IF I$ =  >"1"  AND I$ < = "9"  THEN  VTAB 16: HTAB 30: PRINT "<SPEED=" +I$ +">";
  96. 5990  RETURN 
  97. 5995  RETURN 
  98. 6000  REM  === UPDATE VARIABLES ===
  99. 6010  NORMAL : VTAB 2: HTAB HT: PRINT  RIGHT$("  " + STR$(I),2);: RETURN 
  100. 6015  STOP 
  101. 6020  VTAB 2: HTAB HT: PRINT  RIGHT$("  " + STR$(I),2);:D = D +1: VTAB 14: HTAB TH: PRINT  RIGHT$("   " + STR$(I),3);: GOSUB 6700: IF D <5  THEN  VTAB 15: HTAB TH: PRINT  RIGHT$("   " + STR$(D),3);: RETURN 
  102. 6025  RETURN 
  103. 6030  RETURN 
  104. 6040  VTAB 3: HTAB HT: PRINT  RIGHT$("  " + STR$(F),2);: INVERSE : VTAB 20: HTAB 2: PRINT S1$;: VTAB 20: HTAB (6 +F): PRINT "^(FLAG)";: NORMAL : RETURN 
  105. 6050  VTAB 4: HTAB HT: PRINT  RIGHT$("  " + STR$(P),2);: INVERSE : VTAB 21: HTAB 2: PRINT S1$;: VTAB 21: HTAB (6 +P): PRINT "^(P.P.)";: NORMAL : RETURN 
  106. 6060  VTAB 5: HTAB HT: PRINT  RIGHT$("  " + STR$(L),2);: RETURN 
  107. 6070  VTAB 6: HTAB HT: PRINT  RIGHT$("   " + STR$(H),2);: RETURN 
  108. 6080  GOSUB 6800:RC = RC +1: VTAB 12: HTAB TH: PRINT  RIGHT$("   " + STR$(RC),3);: RETURN 
  109. 6090  VTAB 9: HTAB HT: PRINT " " +T$;: RETURN 
  110. 6100  VTAB 7: HTAB HT: PRINT " " +A$(L);: INVERSE : VTAB 17: HTAB 6 +L: PRINT A$(L);: NORMAL : RETURN 
  111. 6110  VTAB 8: HTAB HT: PRINT " " +A$(H);: INVERSE : VTAB 17: HTAB 6 +H: PRINT A$(H);: NORMAL :RE = RE +1:: VTAB 13: HTAB TH: PRINT  RIGHT$("   " + STR$(RE),3);: RETURN 
  112. 6120  VTAB 5: HTAB HT: PRINT  RIGHT$("  " + STR$(L),2);: RETURN 
  113. 6130  RETURN 
  114. 6140  VTAB 4: HTAB HT: PRINT  RIGHT$("  " + STR$(P),2);: INVERSE : VTAB 21: HTAB 2: PRINT S1$;: VTAB 21: HTAB (6 +P): PRINT "^(P.P.)";: RETURN 
  115. 6150  RETURN 
  116. 6160  RETURN 
  117. 6200  REM  === LINE STATEMENTS ===
  118. 6210  PRINT "510 I = 26";: RETURN 
  119. 6220  PRINT "520 I = INT (I / 2)";: RETURN 
  120. 6230  PRINT "530 IF I = 0 THEN RETURN";: RETURN 
  121. 6240  PRINT "540 F = 26 - I";: RETURN 
  122. 6250  PRINT "550 P = 1";: RETURN 
  123. 6260  PRINT "560 L = P";: RETURN 
  124. 6270  PRINT "570 H = L + I";: RETURN 
  125. 6280  PRINT "580 IF A$ (L) < = A$ (H) THEN 640";: RETURN 
  126. 6290  PRINT "590 T$ = A$ (L)";: RETURN 
  127. 6300  PRINT "600 A$ (L) = A$ (H)";: RETURN 
  128. 6310  PRINT "610 A$ (H) = T$";: RETURN 
  129. 6320  PRINT "620 L = L - I";: RETURN 
  130. 6330  PRINT "630 IF L > 0 THEN 570";: RETURN 
  131. 6340  PRINT "640 P = P + 1";: RETURN 
  132. 6350  PRINT "650 IF P > F THEN 520";: RETURN 
  133. 6360  PRINT "660 GOTO 560";: RETURN 
  134. 6400  REM  === LINE COMMENTS ===
  135. 6410  PRINT "  SET <I> TO TOTAL ITEMS IN ARRAY";: RETURN 
  136. 6420  PRINT "<I>/2 IS THE INTERVAL BTW'N ITEMS";: RETURN 
  137. 6430  PRINT "IF INTERVAL=0,SORT IS COMPLETE";: RETURN 
  138. 6440  PRINT "FLAG SIGNALS END OF THIS SORT PASS";: RETURN 
  139. 6450  PRINT "RESET POINTER TO START OF ARRAY";: RETURN 
  140. 6460  PRINT "LOW SUBSCRIPT SET = TO POINTER";: RETURN 
  141. 6470  PRINT "SETUP # OF PLACES BTW'N ITEMS";: RETURN 
  142. 6480  PRINT "COMPARE LOW/HIGH ITEMS IN ARRAY";: RETURN 
  143. 6490  PRINT "COPY LOW ITEM INTO TEMP STRING";: RETURN 
  144. 6500  PRINT "COPY HIGH ITEM INTO LOW ITEM";: RETURN 
  145. 6510  PRINT "COPY TEMP STRING INTO HIGH ITEM";: RETURN 
  146. 6520  PRINT "SUBTRACT INTERVAL FROM LOW SUBSCRIPT";: RETURN 
  147. 6530  PRINT "IF <L> MORE THAN 0 TRY TO MOVE LOWER";: RETURN 
  148. 6540  IF SW$ = "SWAP YES"  THEN  PRINT "P LESS THAN 0-MOVE TO NEXT HIGHER ITEM";: RETURN 
  149. 6545  PRINT "NO EXCHANGE-MOVE TO NEXT HIGHER ITEM";: RETURN 
  150. 6550  PRINT "IF POINTER PAST FLAG,THIS PASS DONE";: RETURN 
  151. 6560  PRINT "PASS NOT COMPLETE,COMPARE NEXT PAIR";: RETURN 
  152. 6700  REM  === STORE RESULTS OF PASS ===
  153. 6710  FOR X = 1 TO 26:D$(D,X) = A$(X): NEXT 
  154. 6720  RETURN 
  155. 6800  REM  === UPDATE PTRS AND ARRAY ===
  156. 6810  INVERSE : VTAB 19: HTAB 2: PRINT S1$;: VTAB 17: HTAB 2: PRINT S1$;: IF SC >1  THEN  VTAB 18: HTAB 6 +LX: PRINT A$(LX);: HTAB 6 +HX: PRINT A$(HX);
  157. 6815  VTAB 17: HTAB 6 +L: PRINT A$(L);: HTAB 6 +H: PRINT A$(H);: VTAB 18: HTAB 6 +L: PRINT " ";: HTAB 6 +H: PRINT " ";
  158. 6820  VTAB 19: HTAB 2 - LEN( STR$(L)) +L: PRINT "A$(" + STR$(L) +")^";: HTAB 6 +H: PRINT "^A$(" + STR$(H) +")";
  159. 6830  VTAB 16: HTAB 3: PRINT SW$;: NORMAL 
  160. 6840  VTAB 7: HTAB HT +1: PRINT A$(L);
  161. 6850  VTAB 8: HTAB HT +1: PRINT A$(H);
  162. 6860 LX = L:HX = H: RETURN 
  163. 6900  REM  --- RESULTS TO SCREEN ---
  164. 6910  FLASH : VTAB 22: HTAB 6: PRINT " PUSH <RETURN> FOR FINAL DATA";: GET I$
  165. 6920  HOME : INVERSE : VTAB 4: HTAB 5: PRINT "      ORIGINAL UNSORTED ARRAY    ": VTAB 5: HTAB 5: PRINT "     ";: FOR X = 1 TO 26: PRINT D$(1,X);: NEXT : PRINT "  ";
  166. 6930  VTAB 6: HTAB 5: PRINT "PASS      ";: PRINT "(RESULTS OF PASS)      ";
  167. 6940  FOR X = 2 TO 5: VTAB 5 +X: HTAB 5: PRINT " " + STR$(X -1) +"   ";: FOR Y = 1 TO 26: PRINT D$(X,Y);: NEXT Y: PRINT "  ";: NEXT X
  168. 6950  VTAB 11: HTAB 5: PRINT "       (FINAL ORDER OF ARRAY)    ";
  169. 6960  VTAB 15: HTAB 3: PRINT "TOTAL # OF STATEMENTS EXECUTED = " + RIGHT$("   " + STR$(RS),3);
  170. 6970  VTAB 16: HTAB 3: PRINT "TOTAL # OF COMPARISONS MADE    = " + RIGHT$("   " + STR$(RC),3);
  171. 6980  VTAB 17: HTAB 3: PRINT "TOTAL # OF EXCHANGES MADE      = " + RIGHT$("   " + STR$(RE),3);
  172. 6990  FLASH : VTAB 20: HTAB 5: PRINT " PUSH <RETURN> FOR MAIN MENU";: GET I$: NORMAL : RETURN 
  173. 7000  REM  === SUPERVISE NON-TRANS ===
  174. 7010  CLEAR : GOSUB 8100
  175. 7020  GOSUB 8200
  176. 7030  GOSUB 7200
  177. 7040  GOTO 1100
  178. 7200  REM  --- NTS CONTROL ---
  179. 7210  HOME : INVERSE 
  180. 7220  VTAB 2: HTAB 6: PRINT "   >>> REAL-TIME SORT <<<   "
  181. 7230  VTAB 4: HTAB 6: PRINT "   ORIGINAL UNSORTED ARRAY  ";: VTAB 5: HTAB 6: PRINT " ";: GOSUB 9000: PRINT " ";
  182. 7240  VTAB 10: HTAB 6: FLASH : PRINT " START SORT - PUSH <RETURN>";: GET I$: VTAB 10: HTAB 6: INVERSE : PRINT " START SORT - PUSH <RETURN> ";
  183. 7250  VTAB 9: HTAB 6: PRINT " ****      STARTED     **** ";
  184. 7260  GOSUB 7500: VTAB 8: HTAB 6: PRINT " ****      FINISHED    **** ";
  185. 7270  VTAB 6: HTAB 6: PRINT " ";: GOSUB 9000: PRINT " ";
  186. 7280  VTAB 7: HTAB 6: PRINT "     FINAL SORTED ARRAY     ";
  187. 7290  FLASH : VTAB 12: HTAB 6: PRINT "   PUSH <RETURN> FOR MENU  ";: GET I$
  188. 7300  NORMAL : RETURN 
  189. 7500  REM  === NON TRANS SORT ===
  190. 7510 I = 26
  191. 7520 I =  INT(I/2)
  192. 7530  IF I = 0  THEN  RETURN 
  193. 7540 F = 26 -I
  194. 7550 P = 1
  195. 7560 L = P
  196. 7570 H = L +I
  197. 7580  IF A$(L) < = A$(H)  THEN 7640
  198. 7590 T$ = A$(L)
  199. 7600 A$(L) = A$(H)
  200. 7610 A$(H) = T$
  201. 7620 L = L -I
  202. 7630  IF L >0  THEN 7570
  203. 7640 P = P +1
  204. 7650  IF P >F  THEN 7520
  205. 7660  GOTO 7560
  206. 7670  RETURN 
  207. 8100  REM  === INIT VARIABLES ===
  208. 8110  DIM A$(26),B$(26),C$(26),D$(5,26)
  209. 8120 A$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  210. 8130 S1$ = "                                      "
  211. 8140 TR$ = ">>> THE TRANSPARENT SORT <<<"
  212. 8150 I = 0:F = 0:P = 0:L = 0:H = 0:RS = 0:RC = 0:RE = 0:D = 0:SC = 3:S = SC ^2:SH$ = "":T$ = "": FOR X = 1 TO 26:A$(X) = "": NEXT 
  213. 8160 HT = 37:TH = 35
  214. 8170  RETURN 
  215. 8200  REM  === MENU FOR ALPHA SELECT ===
  216. 8210 TI$ = ">>> ALPHABET MENU <<<"
  217. 8220 C = 6:C$(1) = "IN ORDER....... ALPHABET":C$(2) = "REVERSED ORDER ALPHABET":C$(3) = "SCRAMBLED ORDER ALPHABET":C$(4) = "RANDOM LETTERS ALPHABET":C$(5) = "SELECT YOUR OWN ALPHABET":C$(6) = "RETURN TO MAIN MENU"
  218. 8230  GOSUB 9200: IF K = 6  THEN 1100
  219. 8240  ON K GOSUB 8300,8400,8500,8600,8700
  220. 8250  RETURN 
  221. 8300  REM  === ALPHABET INTO ARRAY ===
  222. 8310  FOR X = 1 TO 26:A$(X) =  MID$ (A$,X,1): NEXT 
  223. 8320  RETURN 
  224. 8400  REM  === REVERSE ALPHABET ===
  225. 8410  GOSUB 8300: FOR X = 1 TO 13:TE$ = A$(X)
  226. 8420 A$(X) = A$(27 -X):A$(27 -X) = TE$: NEXT 
  227. 8430  RETURN 
  228. 8500  REM  === SCRAMBLED ALPHABET ===
  229. 8510  GOSUB 8300
  230. 8520  FOR X = 1 TO 26:Y =  INT( RND(1) *(27 -X)) +X:TE$ = A$(X):A$(X) = A$(Y):A$(Y) = TE$
  231. 8530  NEXT X: RETURN 
  232. 8600  REM  === RANDOM LETTERS ===
  233. 8610  FOR X = 1 TO 26:A$(X) =  CHR$( INT( RND(1) *26) +65): NEXT 
  234. 8620  RETURN 
  235. 8700  REM  === USER SELECT ALPHABET ===
  236. 8710  HOME : GOSUB 8300:P1 = 1
  237. 8720  VTAB 2: HTAB 6: PRINT "SELECT ALPHABET TO BE SORTED";: VTAB 3: HTAB 6: PRINT "----------------------------";: VTAB 4: HTAB 6: PRINT "PUSH <RETURN> WHEN COMPLETE";
  238. 8730  INVERSE : VTAB 10: HTAB 7: GOSUB 9000: NORMAL : VTAB 15: HTAB 7: PRINT "LEFT/RIGHT ARROWS TO MOVE";: VTAB 17: HTAB 7: PRINT "PUSH ANY LETTER TO CHANGE";: VTAB 19: HTAB 3: PRINT "(SPACE-BAR) TO RETURN TO MAIN MENU)";
  239. 8740  FLASH : VTAB 10: HTAB 6 +P1: PRINT A$(P1);: VTAB 11: HTAB 6 +P1: PRINT "^";: VTAB 12: HTAB 5 +P1: PRINT " ^";: NORMAL 
  240. 8750  GET I$: IF I$ =  CHR$(13)  THEN 8810
  241. 8760  IF I$ =  CHR$(32)  THEN 1100
  242. 8770  IF I$ =  >"A"  AND I$ < = "Z"  THEN A$(P1) = I$: FLASH : VTAB 10: HTAB 6 +P1: PRINT A$(P1);: VTAB 12: HTAB 5 +P1: PRINT " ^";: NORMAL : GOTO 8750
  243. 8780  IF I$ =  CHR$(8)  AND P1 >1  THEN  INVERSE : VTAB 10: HTAB 6 +P1: PRINT A$(P1);: NORMAL : VTAB 11: HTAB 6 +P1: PRINT " ";: VTAB 12: HTAB 5 +P1: PRINT "  ";: FLASH :P1 = P1 -1: VTAB 10: HTAB 6 +P1: PRINT A$(P1);: VTAB 11: HTAB 6 +P1: PRINT "^";: VTAB 12: HTAB 5 +P1: PRINT " ^";: NORMAL : GOTO 8750
  244. 8790  IF I$ =  CHR$(21)  AND P1 <26  THEN  INVERSE : VTAB 10: HTAB 6 +P1: PRINT A$(P1);: NORMAL : VTAB 11: HTAB 6 +P1: PRINT " ";: VTAB 12: HTAB 5 +P1: PRINT "  ";: FLASH :P1 = P1 +1: VTAB 10: HTAB 6 +P1: PRINT A$(P1);: VTAB 11: HTAB 6 +P1: PRINT "^";: VTAB 12: HTAB 5 +P1: PRINT " ^";: NORMAL : GOTO 8750
  245. 8800  GOTO 8750
  246. 8810  RETURN 
  247. 9000  REM  === DISPLAY ARRAY ===
  248. 9010  FOR X = 1 TO 26: PRINT A$(X);: NEXT 
  249. 9020  RETURN 
  250. 9200  REM  === MENU SELECTOR ===
  251. 9210  HOME 
  252. 9220  HTAB 10: VTAB 2: PRINT TI$
  253. 9230  FOR X = 1 TO C: VTAB (X *2 +5): HTAB 10: PRINT C$(X): NEXT 
  254. 9240  VTAB 20: HTAB 5: PRINT "LEFT/RIGHT ARROWS FOR SELECTION";: VTAB 22: HTAB 6: PRINT "PUSH <RETURN> FOR YOUR CHOICE";
  255. 9250 K = 1: VTAB (K *2 +5): HTAB 10: FLASH : PRINT C$(1);
  256. 9260  GET I$:I =  ASC(I$): IF I < >13  AND I < >8  AND I < >21  THEN 9260
  257. 9270  IF I = 13  THEN  GOTO 9320
  258. 9280  VTAB (K *2 +5): HTAB 10: NORMAL : PRINT C$(K);
  259. 9290  IF I = 8  THEN K = K -1: IF K <1  THEN K = C
  260. 9300  IF I = 21  THEN K = K +1: IF K >C  THEN K = 1
  261. 9310  VTAB (K *2 +5): HTAB 10: FLASH : PRINT C$(K);: GOTO 9260
  262. 9320  NORMAL :I = 0: RETURN